<!DOCTYPE html><html lang="zh-CN" data-theme="dark"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>XiaoZhang’s Blog - XiaoZhang’s Blog</title><meta name="keywords" content="关键词"><meta name="author" content="XiaoZhang,邮箱"><meta name="copyright" content="XiaoZhang"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#0d0d0d"><meta name="description" content="彼方尚有荣光在！！！">
<meta property="og:type" content="website">
<meta property="og:title" content="XiaoZhang’s Blog">
<meta property="og:url" content="https://zhang_shaolong.gitee.io/index.html">
<meta property="og:site_name" content="XiaoZhang’s Blog">
<meta property="og:description" content="彼方尚有荣光在！！！">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://zhang_shaolong.gitee.io/img/avatar.jpeg">
<meta property="article:author" content="XiaoZhang">
<meta property="article:tag" content="关键词">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://zhang_shaolong.gitee.io/img/avatar.jpeg"><link rel="shortcut icon" href="/img/dvoe.png"><link rel="canonical" href="https://zhang_shaolong.gitee.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//hm.baidu.com"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'"><script>var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?ffcbb436e2f4b0326f38f622b85c0f07";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"search.xml","languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '天',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'mediumZoom',
  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#121212","position":"top-right"},
  source: {
    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
    },
    fancybox: {
      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isanchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'XiaoZhang’s Blog',
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2022-03-25 20:44:50'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><div class="aplayer" data-id="7031037814" data-server="netease" data-type="playlist" data-fixed="true" data-listFolded="false" data-order="random" data-preload="none"></div><link rel="stylesheet" href="https://cdn.bootcss.com/aplayer/1.10.1/APlayer.min.css"><script src="https://cdn.bootcss.com/aplayer/1.10.1/APlayer.min.js"></script><script src="https://cdn.jsdelivr.net/npm/meting@1.2.0/dist/Meting.min.js"></script><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if (GLOBAL_CONFIG_SITE.isHome && /iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    document.addEventListener('pjax:complete', detectApple)})(window)</script><link rel="stylesheet" href="/css/bg.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/static-butterfly/dist/css/index.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/l-lin/font-awesome-animation/dist/font-awesome-animation.min.css"  media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://zhang_shaolong.gitee.io/css/bg.css"><div id="aplayer"></div><!--script(src="https://cdn.jsdelivr.net/gh/radium-bit/res@master/live2d/autoload.js" async)--><!--script(src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js" async)--><!-- hexo injector head_end start --><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-footer-beautify@1.0.0/lib/runtime.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiper.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiper.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiperstyle.css" media="print" onload="this.media='all'"><!-- hexo injector head_end end --><meta name="generator" content="Hexo 5.4.0"><link rel="alternate" href="/atom.xml" title="XiaoZhang’s Blog" type="application/atom+xml">
</head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar.jpeg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">25</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">20</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/navigation/"><i class="fa-fw fas fa-map"></i><span> 导航</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 博客</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 娱乐</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/photos/"><i class="fa-fw fas fa-camera"></i><span> 相册</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/bb/"><i class="fa-fw fas fa-bomb"></i><span> 动态</span></a></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友人帐</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fa fa-comments"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/my-profile/"><i class="fa-fw fas fa-heart"></i><span> 关于我</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">XiaoZhang’s Blog</a><div id="he-plugin-simple"></div></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/navigation/"><i class="fa-fw fas fa-map"></i><span> 导航</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 博客</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 娱乐</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/photos/"><i class="fa-fw fas fa-camera"></i><span> 相册</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/bb/"><i class="fa-fw fas fa-bomb"></i><span> 动态</span></a></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友人帐</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fa fa-comments"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/my-profile/"><i class="fa-fw fas fa-heart"></i><span> 关于我</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">XiaoZhang’s Blog</h1><div id="site-subtitle"><span id="subtitle"></span></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/89a6.html" title="总结(1.16)">     <img class="post_bg" src="https://api.ixiaowai.cn/gqapi/gqapi.php" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(1.16)"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/89a6.html" title="总结(1.16)">总结(1.16)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-01-16T13:51:00.000Z" title="发表于 2022-01-16 21:51:00">2022-01-16</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/89a6.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/89a6.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期概况&emsp;&emsp;放假已经有一周时间了，有点颓废。刚跟群里的大佬们交流了一下，现在感觉自己相当颓废，大佬已经开始构建知识体系了，而我还在寻求方法，这就是差距啊。上周的计划明明写的好好的，但是实行不起来，白天要求店里帮忙，晚上就一两个小时的时间可以干些自己的事情，无奈啊。&emsp;&emsp;HTML,CSS,JavaScript,vue,react,计网，算法，数据结构，东西太多了，好难。主要还是没有计划。白天在街上，太嘈杂了，而且还很冷，根本静不下心去复习。春招马上就要开始了，简历还有重新修改一遍。这两天还遇到一件事，再一次让我感觉到眼界很重要，多去看一下东西，认识一些朋友，然后从他们身上学习到一些值得学习的地方，之后你会感觉大有收获。奉劝看到此博客的同学，一定要制定好机会地去实施某件事。有计划地执行和毫无章法地执行真有天壤之别，切身体会。尽快找到一种合适的方法去复习吧。&emsp;&emsp;期末考试成绩有的科目还没有下来，感觉应该不会挂科。自律是一件多么可怕的事情，哎，收拾好行囊准备面对风暴吧。
  
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/488c.html" title="JS函数柯里化">     <img class="post_bg" src="/../cover/currying.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JS函数柯里化"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/488c.html" title="JS函数柯里化">JS函数柯里化</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-12-07T06:37:00.000Z" title="发表于 2021-12-07 14:37:00">2021-12-07</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/488c.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/488c.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">1.柯里化的定义函数柯里化又叫部分求值，维基百科中对柯里化 (Currying) 的定义为：

在计算机科学中，柯里化（Currying）是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数，并且返回接受余下的参数且返回结果的新函数的技术。

只传递给函数一部分参数来调用它，让它返回一个新函数去处理剩下的参数。
1234567891011const add = (...args) =&gt; args.reduce((a, b) =&gt; a + b);// 传入多个参数，执行 add 函数add(1, 2) // 3// 假设我们实现了一个 currying 函数，支持一次传入一个参数let sum = currying(add);// 封装第一个参数，方便重用let addCurryOne = sum(1);addCurryOne(2) // 3addCurryOne(3) // 4
2.Currying的实际应用柯里化函数三种实际的应用场景：

延迟计算
部分求和、bind 函数


动态创建函数
添加监听 addEvent、惰性函数


参数复用
Fun ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/2f90.html" title="总结(12.5)">     <img class="post_bg" src="https://tva4.sinaimg.cn/large/87c01ec7gy1frmmw9573mj21kw0w0npk.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(12.5)"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/2f90.html" title="总结(12.5)">总结(12.5)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-12-05T03:17:00.000Z" title="发表于 2021-12-05 11:17:00">2021-12-05</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/2f90.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/2f90.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期概况&emsp;&emsp;浮躁，最近很是浮躁。算法题也没咋做，知识点也没咋看，但一天天还感觉自己可忙，一天天也不知道自己忙啥，而且还感觉很累。四级最近也只是做了一点点题，感觉还是过不了，哎。昨天听王大卷王讲课，他已经达到企业级理解了，已经准备跑路了。
&emsp;&emsp;前两天李老师说一个项目要写，本来是要求见见世面的，但是后来也没去成，明天上午8点去行政楼，廉政测评有了新的需求，今年还要改动，希望改动的地方不要太大，去年就导致期末复习时间很少，就三天。下下周就要开始课程实习了，一实习还是两周，估计靠尊宝开始复习了，这学期啥也没学，还有一个半月这学期差不多就结束了，真快。
&emsp;&emsp;组里大二没有前端，所以教前端还得我这大三老学长。就我们组大一的学习情况来看，不容乐观。前端刚开始学起来确实不难，但是知识点很多，小细节也很多。在有限的时间去完成学习任务和考核计划还是有一定难度的。大一还要上早操早读，睡眠严重不足，所以会感到很累，我也是挺理解的，有时候确实想好好休息休息，但是时间不等人啊，你学不进去的知识点，总会有人能学进去，这也是个磨练毅力的过程。
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/dc34.html" title="Socket.IO使用">     <img class="post_bg" src="/../cover/socket.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Socket.IO使用"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/dc34.html" title="Socket.IO使用">Socket.IO使用</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-30T01:19:00.000Z" title="发表于 2021-11-30 09:19:00">2021-11-30</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/dc34.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/dc34.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">1.什么是 Socket.IO ?&emsp;&emsp;Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架，包含 client 的 JavaScript 和 server 的 Node,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。
2.Socket.IO使用之前的准备(网络框架)第一个目标是建立一个简单的 HTML 网页，提供一个表单和一个消息列表。为此，我们将使用 Node.JS Web 框架express。确保安装了Node.JS。
首先让我们创建一个package.json描述我们项目的清单文件。我建议你把它放在一个专门的空目录中（我称之为 mine chat-example）。
1234567&#123;  &quot;name&quot;: &quot;socket-chat-example&quot;,  &quot;version&quot;: &quot;0.0.1&quot;,  &quot;description&quot;: &quot;my first socket.io app&quot;,   ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/b9e7e805.html" title="总结(11.27)">     <img class="post_bg" src="https://tva1.sinaimg.cn/large/0060lm7Tly1ftg6oqfp3aj318g0p0k4h.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(11.27)"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/b9e7e805.html" title="总结(11.27)">总结(11.27)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-27T08:55:00.000Z" title="发表于 2021-11-27 16:55:00">2021-11-27</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/b9e7e805.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/b9e7e805.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期概况&emsp;&emsp;近几天把博客改动了一下，一些小的细节完善了一下，并且发现了一些非常有趣的小网站，添加到了导航页面，包含一些小游戏– **导航页面**。   大二的昨天晚上和今天上午进行项目考核，抛开项目不说，他们的表达能力欠佳，声音小，似乎还有点口音，主要问题是声音小，而且做事拖拖拉拉，就算项目没有在规定的时间内写完，也要把整个项目的项目流程讲清楚，比较出色的地方着重进行讲解，而不是泛讲。   大一的学弟学妹从今天起，也要开始写博客了，如果有大一的同学可以看到，希望他们知道，博客挺重要的。
&emsp;&emsp;算法这周就做了三道，可能刷题的方法不是很对吧，总感觉做起题来很吃力。四级考试提前了，但是还是没有开始准备，还有半个月的时间。半个月，创造一个奇迹？那我可真牛，四级听力是死活也听不懂，无语。最近调课，导致课全部堆积到这几天的，在小组的时间相对就是少了。
&emsp;&emsp;这几天各科都相继进行期中考试，我的计网实验忘交了，时间截止了，很懊悔，难受，害怕老师期末挂我科。网易云的日推还是很给力的，最近又发现了很多神仙级别的英文歌，u1s1,真的非常棒，当然，俺不 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/e310.html" title="总结(11.20)">     <img class="post_bg" src="https://tva1.sinaimg.cn/large/87c01ec7gy1frmrtcq1lfj21hc0u0qc1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(11.20)"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/e310.html" title="总结(11.20)">总结(11.20)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-20T13:39:00.000Z" title="发表于 2021-11-20 21:39:00">2021-11-20</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/e310.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/e310.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期概况&emsp;&emsp;上周学习状态不是很好，这周有所改善。前两天，林哥问了Typescript学了没有？我之前只是听白钰航学长讲过课，之后就星星点点地看了看，没有进行系统的学习，这周开始认真学习一下Typescript。之前都是看视频讲解进行学习,通过前一段改个人博客中的bug,跟着官方文档进行学习还是非常有必要的，视频讲解中也会有一些错误，而且不容易发觉，久而久之就会对正确的知识有误解。这样会导致以后写项目或者面试中出现问题，所以根据文档学习就能很好地避免此类事情的发生。
&emsp;&emsp;算法这周没有怎么做，剑指offer上面的题越刷剩的越难，本来数据结构就很薄弱，越往后就越显得相形见绌。今天蓝桥杯报名，三百块钱又没了，交完钱，农行卡上就剩2.96，我可真是有点小钱，幸好微信上还有点钱，不能真要吃土了。什么时候才能实现财富自由？过上顿顿有个🐓🥚的幸福生活。
&emsp;&emsp;王岩若学姐去上海百度了，福坤学长去阿里影业了，真羡慕，想去哪就去哪。真担心我个菜🐓明年能不能找到工作，我可不想拖卷王们的后腿。代入感太强了，我已经开始慌了。还要，最近发现了几个宝藏博 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/f40f.html" title="JavaScript类型判断">     <img class="post_bg" src="/../cover/JavaScript.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JavaScript类型判断"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/f40f.html" title="JavaScript类型判断">JavaScript类型判断</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-17T02:22:00.000Z" title="发表于 2021-11-17 10:22:00">2021-11-17</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/f40f.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/f40f.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">1、js中的数据类型
基本数据类型：Undefined、Null、Boolean、Number、String，Symbol
引用数据类型 ：Object、Array、Function

12345678910let bool = true;let num = 1;let str = &#x27;abc&#x27;;let und= undefined;let nul = null;let arr = [1,2,3,4];let obj = &#123;name:&#x27;xiaoming&#x27;,age:22&#125;;let fun = function()&#123;console.log(&#x27;hello&#x27;)&#125;;let s1 = Symbol();

2、typeof12345678910console.log(typeof bool); //booleanconsole.log(typeof num);//numberconsole.log(typeof str);//stringconsole.log(typeof und);//undefi ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/e304.html" title="总结（11.13）">     <img class="post_bg" src="https://tva2.sinaimg.cn/large/87c01ec7gy1frmmz605z4j21kw0w0qvh.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结（11.13）"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/e304.html" title="总结（11.13）">总结（11.13）</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-13T13:34:00.000Z" title="发表于 2021-11-13 21:34:00">2021-11-13</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/e304.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/e304.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期概况&emsp;&emsp;关于学习，这周就做了星星点点的几道算法题，而且还是在题解的帮助下搞出来的，没办法，越来越废。然后看了一些前端的知识点以及发现了一些新的东西，比如一个客服网站，通过注册申请就可以使用，很方便，样式也挺不错的，而且免费  TIDIO,有兴趣的朋友可以研究一下。
&emsp;&emsp;这一周过的浑浑噩噩，几乎啥都没干，脑子很乱。我本身是一个不喜欢做出决断的人（针对自己的人，不是遇到事情），很多时候需要做出决断的事，往往喜欢往后拖，直到拖不下去才去考虑。以前上高中的时候会说，考上大学就好了，现在会说，大学读完就好了，所以路的尽头还是路，犹豫不决的事也终将需要做出决断。
&emsp;&emsp;算起来，我已经好久、好久、好久没有完完全全读完一本小说的，或者看一部自传型的电影（希望小伙伴们可以给我推荐）。其实，我以前挺喜欢多一些小说的，从小说中去窥探别人的人生，那种感觉很奇妙，我会去思考，如果我也遇到了同样的遭遇，会用怎样一种处理方式去度过。有时候就会想，他们的生活也太苦，我估计不行，我肯定会淹没在这些灾难之中。但他却可以以这样一种积极乐观的心态去面对，很棒，敬畏 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/2cb6.html" title="总结（11,6）">     <img class="post_bg" src="https://tva2.sinaimg.cn/large/87c01ec7gy1frmmnduv7lj21hc0u0x6p.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结（11,6）"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/2cb6.html" title="总结（11,6）">总结（11,6）</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-06T13:25:00.000Z" title="发表于 2021-11-06 21:25:00">2021-11-06</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/2cb6.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/2cb6.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">近期新闻&emsp;&emsp;关于我的博客，进一步完善了一些功能，访客在评论区评论时，我可以通过QQ邮箱即使收到信息，然后给予回复，访客也可以通过在评论区填写的邮箱收到我所回复的信息。并且取消了输入时窗口抖动的特效，一些小伙伴反馈说怪怪的。欢迎小伙伴们，前来互动，留言。
&emsp;&emsp;这周才静下心来，做了几道算法，数据结构可能还需要在复习复习，接着刷剑指offer，一遍都还没有刷完，还要二刷，三刷，难。最近有点颓废，不在状态。可能各位卷王都在背地里偷偷的卷吧，为了不让我发现，隐藏的真好，也可能最近总是感冒影响的了吧，希望尽快找回状态，追随大佬们的脚步。
&emsp;&emsp;关于组件库（assist-ui），已经发布到npm上面了，可以通过npm i assist-ui下载，就仿这element-ui写了几个组件。实现了由文档变成页面，但是部署的过程中遇到了一点小问题，页面的css和js样式丢失，所以需要找一下原因。还有一个月就4级了，二战，听力太烦人了，如果听力给力，就不会二战了，所以，听力在4级的考试中很重要。
&emsp;&emsp;(ps：今天是11.6号，s11 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/a2b7.html" title="使用VuePress搭建vue组件库">     <img class="post_bg" src="/../img/assist/image2.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="使用VuePress搭建vue组件库"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/a2b7.html" title="使用VuePress搭建vue组件库">使用VuePress搭建vue组件库</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-11-02T08:03:00.000Z" title="发表于 2021-11-02 16:03:00">2021-11-02</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-comments"></i><a href="/posts/a2b7.html#post-comment" itemprop="discussionUrl"><span class="valine-comment-count" data-xid="/posts/a2b7.html" itemprop="commentCount"></span></a><span class="article-meta-label"> 条评论</span></span></div><div class="content">为什么要使用VuePress？社区里面有很多优秀的文档工具可以供我们前端程序员选择，例如Gitbook、Hexo、Docusaurus。就个人使用而言，体验最好的文档工具是Docusaurus。

Docusaurus具有配置简单，目录结构合理、Markdown渲染配置灵活等一系列的优点。但对于Vue的开发者不太友好的是，Docusaurus是基于React的，如果你想在其中使用Vue的写法和渲染Vue组件会变得十分困难。所以如果你是Vue的开发者，在编写Vue相关组件文档的时候，个人还是推荐使用官方的VuePress。
下面的教程会使用VuePress生成类似Element的组件文档库，包括Vue组件展示、示例代码展示、自定义主题等常用功能。
安装
创建项目 vuepress-element-doc1mkdir vuepress-element-doc &amp;&amp; cd vuepress-element-doc
 初始化npm包管理并在 package.json 中新增脚本1npm init -y
12345// package.json&quot;scripts&quot ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><a class="page-number" href="/page/3/#content-inner">3</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/img/avatar.jpeg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">XiaoZhang</div><div class="author-info__description">彼方尚有荣光在！！！ </div></div><div class="card-info-data"><div class="card-info-data-item is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">25</div></a></div><div class="card-info-data-item is-center"><a href="/tags/"><div class="headline">标签</div><div class="length-num">20</div></a></div></div><a class="button--animated" id="card-info-btn" target="_blank" rel="noopener" href="https://gitee.com/zhang_shaolong"><i class="fab fa-github-alt"></i><span>Follow Me</span></a></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">有朋自远方来，不亦乐乎！</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/posts/89a6.html" title="总结(1.16)"><img src="https://api.ixiaowai.cn/gqapi/gqapi.php" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(1.16)"/></a><div class="content"><a class="title" href="/posts/89a6.html" title="总结(1.16)">总结(1.16)</a><time datetime="2022-01-16T13:51:00.000Z" title="发表于 2022-01-16 21:51:00">2022-01-16</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/488c.html" title="JS函数柯里化"><img src="/../cover/currying.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JS函数柯里化"/></a><div class="content"><a class="title" href="/posts/488c.html" title="JS函数柯里化">JS函数柯里化</a><time datetime="2021-12-07T06:37:00.000Z" title="发表于 2021-12-07 14:37:00">2021-12-07</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/2f90.html" title="总结(12.5)"><img src="https://tva4.sinaimg.cn/large/87c01ec7gy1frmmw9573mj21kw0w0npk.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(12.5)"/></a><div class="content"><a class="title" href="/posts/2f90.html" title="总结(12.5)">总结(12.5)</a><time datetime="2021-12-05T03:17:00.000Z" title="发表于 2021-12-05 11:17:00">2021-12-05</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/dc34.html" title="Socket.IO使用"><img src="/../cover/socket.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Socket.IO使用"/></a><div class="content"><a class="title" href="/posts/dc34.html" title="Socket.IO使用">Socket.IO使用</a><time datetime="2021-11-30T01:19:00.000Z" title="发表于 2021-11-30 09:19:00">2021-11-30</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/b9e7e805.html" title="总结(11.27)"><img src="https://tva1.sinaimg.cn/large/0060lm7Tly1ftg6oqfp3aj318g0p0k4h.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="总结(11.27)"/></a><div class="content"><a class="title" href="/posts/b9e7e805.html" title="总结(11.27)">总结(11.27)</a><time datetime="2021-11-27T08:55:00.000Z" title="发表于 2021-11-27 16:55:00">2021-11-27</time></div></div></div></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/CSS/" style="font-size: 1.34em; color: #99a3b0">CSS</a> <a href="/tags/ES6/" style="font-size: 1.18em; color: #999ca1">ES6</a> <a href="/tags/HTML/" style="font-size: 1.18em; color: #999ca1">HTML</a> <a href="/tags/Hexo/" style="font-size: 1.18em; color: #999ca1">Hexo</a> <a href="/tags/JavaScript/" style="font-size: 1.18em; color: #999ca1">JavaScript</a> <a href="/tags/Node/" style="font-size: 1.1em; color: #999">Node</a> <a href="/tags/Socket-IO/" style="font-size: 1.1em; color: #999">Socket.IO</a> <a href="/tags/git/" style="font-size: 1.1em; color: #999">git</a> <a href="/tags/markdown/" style="font-size: 1.1em; color: #999">markdown</a> <a href="/tags/vue/" style="font-size: 1.1em; color: #999">vue</a> <a href="/tags/vue%E7%BB%84%E4%BB%B6%E5%BA%93/" style="font-size: 1.1em; color: #999">vue组件库</a> <a href="/tags/%E5%89%8D%E7%AB%AF/" style="font-size: 1.5em; color: #99a9bf">前端</a> <a href="/tags/%E5%8E%9F%E5%9E%8B%E9%93%BE/" style="font-size: 1.1em; color: #999">原型链</a> <a href="/tags/%E5%8F%8D%E6%80%9D/" style="font-size: 1.42em; color: #99a6b7">反思</a> <a href="/tags/%E5%B8%83%E5%B1%80/" style="font-size: 1.1em; color: #999">布局</a> <a href="/tags/%E6%80%BB%E7%BB%93/" style="font-size: 1.42em; color: #99a6b7">总结</a> <a href="/tags/%E6%95%99%E7%A8%8B/" style="font-size: 1.18em; color: #999ca1">教程</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 1.26em; color: #999fa8">数据结构</a> <a href="/tags/%E6%96%87%E6%A1%A3/" style="font-size: 1.18em; color: #999ca1">文档</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 1.26em; color: #999fa8">算法</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
    <i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/01/"><span class="card-archive-list-date">一月 2022</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/12/"><span class="card-archive-list-date">十二月 2021</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/11/"><span class="card-archive-list-date">十一月 2021</span><span class="card-archive-list-count">7</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/10/"><span class="card-archive-list-date">十月 2021</span><span class="card-archive-list-count">8</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/08/"><span class="card-archive-list-date">八月 2021</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/06/"><span class="card-archive-list-date">六月 2021</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/05/"><span class="card-archive-list-date">五月 2021</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/04/"><span class="card-archive-list-date">四月 2021</span><span class="card-archive-list-count">2</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">25</div></div><div class="webinfo-item"><div class="item-name">已运行时间 :</div><div class="item-count" id="runtimeshow" data-publishDate="2020-12-16T16:00:00.000Z"></div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2022-03-25T12:44:49.874Z"></div></div></div></div><div class="card-widget card-hitokoto"><div class="card-content"><div class="item-headline"><i class="fas fa-quote-left"></i><span>一言</span><div id="hitokoto">:D 获取中...</div><i id="hitofrom">:D 获取中...</i><script src="https://cdn.jsdelivr.net/npm/bluebird@3/js/browser/bluebird.min.js"></script><script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@2.0.3/fetch.min.js"></script><script>fetch('https://v1.hitokoto.cn')
    .then(function (res){
        return res.json();
    })
    .then(function (data) {
        var hitokoto = document.getElementById('hitokoto');
        hitokoto.innerText = data.hitokoto;
        var hitofrom = document.getElementById('hitofrom');
        hitofrom.innerText = "　　　　　——" + data.from + '';
    })
    .catch(function (err) {
        console.error(err);
    })</script></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="chat_btn" type="button" title="rightside.chat_btn"><i class="fas fa-sms"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><div class="search-dialog__title" id="local-search-title">本地搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div></div><hr/><div id="local-search-results"></div><span class="search-close-button"><i class="fas fa-times"></i></span></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js"></script><script src="https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js" type="module"></script><script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><script>var preloader = {
  endLoading: () => {
    document.body.style.overflow = 'auto';
    document.getElementById('loading-box').classList.add("loaded")
  },
  initLoading: () => {
    document.body.style.overflow = '';
    document.getElementById('loading-box').classList.remove("loaded")

  }
}
window.addEventListener('load',preloader.endLoading())</script><div class="js-pjax"><script>(() => {
  function loadValine () {
    function initValine () {
      let initData = {
        el: '#vcomment',
        appId: 'eHF7sUaBksaicGG9E3R7cdnJ-gzGzoHsz',
        appKey: 'nkwWdcso9uIl84CMuiYeg94T',
      }
      
      const valine = new Valine(initData)
    }

    if (typeof Valine === 'function') initValine() 
    else getScript('https://cdn.jsdelivr.net/gh/HCLonely/Valine@latest/dist/Valine.min.js').then(initValine)
  }

  window.pjax ? loadValine() : window.addEventListener('load', loadValine)
})()</script><script>function subtitleType () {
  getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => {
    jinrishici.load(function (result) {
      if (true) {
        var sub = "".length == 0 ? new Array() : "".split(',')
        var content = result.data.content
        var both = sub.unshift(content)
        var typed = new Typed('#subtitle', {
          strings: sub,
          startDelay: 300,
          typeSpeed: 150,
          loop: true,
          backSpeed: 50,
        })
      } else {
        document.getElementById('subtitle').innerHTML = result.data.content
      }
    })
  })
}

if (true) {
  if (typeof Typed === 'function') {
    subtitleType()
  } else {
    getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
  }
} else {
  subtitleType()
}
</script></div><canvas id="universe"></canvas><script src="https://myhkw.cn/player/js/jquery.min.js" type="text/javascript"></script><script defer src="https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script src="/js/star.js"></script><script async src="/js/diytitle.js"></script><script async data-pjax src="/js/randombg.js"></script><script src="https://widget.qweather.net/simple/static/js/he-simple-common.js?v=2.0"></script><script async src="/js/weather.js"></script><script defer src="https://cdn.jsdelivr.net/npm/hexo-theme-volantis@latest/source/js/issues.min.js"></script><script src="/js/universe.js"></script><script src="https://npm.elemecdn.com/jquery@latest/dist/jquery.min.js"></script><script> $(".category-list-count").prepend("<i class=\"fas fa-book\"></i>");</script><script> $(".category-list-item").eq(0).insertAfter($(".gallery-group-name").eq(0))</script><script> $(".category-list-item").eq(1).insertAfter($(".gallery-group-name").eq(1))</script><script> $(".category-list-item").eq(2).insertAfter($(".gallery-group-name").eq(2))</script><script> $(".category-list-item").eq(3).insertAfter($(".gallery-group-name").eq(3))</script><script> $(".category-list-item").eq(4).insertAfter($(".gallery-group-name").eq(4))</script><script> $(".category-list-item").eq(5).insertAfter($(".gallery-group-name").eq(5))</script><script> $(".category-list-item a").hide();</script><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = false;
POWERMODE.mobile = false;
document.body.addEventListener('input', POWERMODE);
</script><script id="click-show-text" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-show-text.min.js" data-mobile="false" data-text="富强,民主,文明,和谐,自由,平等,公正,法治,爱国,敬业,诚信,友善" data-fontsize="18px" data-random="true" async="async"></script><script src="//code.tidio.co/mxavk34b68alwnegypahsbiwew7digod.js" async="async"></script><script>function onTidioChatApiReady() {
  window.tidioChatApi.hide();
  window.tidioChatApi.on("close", function() {
    window.tidioChatApi.hide();
  });
}
if (window.tidioChatApi) {
  window.tidioChatApi.on("ready", onTidioChatApiReady);
} else {
  document.addEventListener("tidioChat-ready", onTidioChatApiReady);
}

var chatBtnFn = () => {
  document.getElementById("chat_btn").addEventListener("click", function(){
    window.tidioChatApi.show();
    window.tidioChatApi.open();
  });
}
chatBtnFn()
</script><script src="https://cdn.jsdelivr.net/npm/pjax/pjax.min.js"></script><script>let pjaxSelectors = [
  'title',
  '#config-diff',
  '#body-wrap',
  '#rightside-config-hide',
  '#rightside-config-show',
  '.js-pjax'
]

if (false) {
  pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
}

var pjax = new Pjax({
  elements: 'a:not([target="_blank"])',
  selectors: pjaxSelectors,
  cacheBust: false,
  analytics: false,
  scrollRestoration: false
})

document.addEventListener('pjax:send', function () {

  // removeEventListener scroll 
  window.removeEventListener('scroll', window.tocScrollFn)
  window.removeEventListener('scroll', scrollCollect)

  typeof preloader === 'object' && preloader.initLoading()
  
  if (window.aplayers) {
    for (let i = 0; i < window.aplayers.length; i++) {
      if (!window.aplayers[i].options.fixed) {
        window.aplayers[i].destroy()
      }
    }
  }

  typeof typed === 'object' && typed.destroy()

  //reset readmode
  const $bodyClassList = document.body.classList
  $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')

})

document.addEventListener('pjax:complete', function () {
  window.refreshFn()

  document.querySelectorAll('script[data-pjax]').forEach(item => {
    const newScript = document.createElement('script')
    const content = item.text || item.textContent || item.innerHTML || ""
    Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
    newScript.appendChild(document.createTextNode(content))
    item.parentNode.replaceChild(newScript, item)
  })

  GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()

  typeof chatBtnFn === 'function' && chatBtnFn()
  typeof panguInit === 'function' && panguInit()

  // google analytics
  typeof gtag === 'function' && gtag('config', '', {'page_path': window.location.pathname});

  // baidu analytics
  typeof _hmt === 'object' && _hmt.push(['_trackPageview',window.location.pathname]);

  typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()

  // Analytics
  if (false) {
    MtaH5.pgv()
  }

  // prismjs
  typeof Prism === 'object' && Prism.highlightAll()

  typeof preloader === 'object' && preloader.endLoading()
})

document.addEventListener('pjax:error', (e) => {
  if (e.request.status === 404) {
    pjax.loadUrl('/404.html')
  }
})</script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div><!-- hexo injector body_end start -->
  <script data-pjax src="https://cdn.jsdelivr.net/gh/Zfour/hexo-github-calendar@1.21/hexo_githubcalendar.js"></script>
  <script data-pjax>
        function GithubCalendarConfig(){
            var git_githubapiurl ="https://python-gitee-calendar-api.vercel.app/api?zhang_shaolong";
            var git_color =['#ebedf0', '#f1f8ff', '#dbedff', '#c8e1ff', '#79b8ff', '#2188ff', '#0366d6', '#005cc5', '#044289', '#032f62', '#05264c'];
            var git_user ="zhang_shaolong";
            var parent_div_git = document.getElementById('recent-posts');
            var git_div_html = '<div class="recent-post-item" style="width:100%;height:auto;padding:10px;"><div id="github_loading" style="width:10%;height:100%;margin:0 auto;display: block"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  viewBox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space="preserve"><path fill="#d0d0d0" d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z" transform="rotate(275.098 25 25)"><animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatCount="indefinite"></animateTransform></path></svg></div><div id="github_container"></div></div>';
            if(parent_div_git && location.pathname =='/'){
                console.log('已挂载github calendar')
                // parent_div_git.innerHTML=git_div_html+parent_div_git.innerHTML // 无报错，但不影响使用(支持pjax跳转)
                parent_div_git.insertAdjacentHTML("afterbegin",git_div_html) // 有报错，但不影响使用(支持pjax跳转)
            };
            GithubCalendar(git_githubapiurl,git_color,git_user)
        }
        if(document.getElementById('recent-posts')){
            GithubCalendarConfig()
        }
    </script>
    <style>#github_container{min-height:280px}@media screen and (max-width:650px) {#github_container{background-image:;min-height:0px}}</style>
    <style></style><script data-pjax>
  function butterfly_footer_beautify_injector_config(){
    var parent_div_git = document.getElementById('footer-wrap');
    var item_html = '<div id="workboard"></div><div id="ghbdages" style="overflow:hidden;max-height:90px;height:auto;text-align:center;margin-top:10px"><div class="swiper-wrapper"><div class="swiper-slide"><a class="github-badge" target="_blank" href="https://hexo.io/" style="margin-inline:5px" title="博客框架为Hexo_v5.4.0"><img src="https://img.shields.io/badge/Frame-Hexo-blue?style=flat&amp;logo=hexo" alt=""/></a><a class="github-badge" target="_blank" href="https://butterfly.js.org/" style="margin-inline:5px" title="主题版本Butterfly_v3.8.2"><img src="https://img.shields.io/badge/Theme-Butterfly-6513df?style=flat&amp;logo=bitdefender" alt=""/></a><a class="github-badge" target="_blank" href="https://www.jsdelivr.com/" style="margin-inline:5px" title="本站使用JsDelivr为静态资源提供CDN加速"><img src="https://img.shields.io/badge/CDN-jsDelivr-orange?style=flat&amp;logo=jsDelivr" alt=""/></a></div><div class="swiper-slide"><a class="github-badge" target="_blank" href="https://github.com/" style="margin-inline:5px" title="本站项目由Github托管"><img src="https://img.shields.io/badge/Source-Github-d021d6?style=flat&amp;logo=GitHub" alt=""/></a><a class="github-badge" target="_blank" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" style="margin-inline:5px" title="本站采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可"><img src="https://img.shields.io/badge/Copyright-BY--NC--SA%204.0-d42328?style=flat&amp;logo=Claris" alt=""/></a></div></div></div><style>a.github-badge:hover:before {display:none}</style>';
    console.log('已挂载butterfly_footer_beautify')
    parent_div_git.insertAdjacentHTML("beforeend",item_html)
    }
  var elist = '/about/'.split(',');
  var cpage = location.pathname;
  var epage = 'all';
  var flag = 0;

  for (var i=0;i<elist.length;i++){
    if (cpage.includes(elist[i])){
      flag++;
    }
  }

  if ((epage ==='all')&&(flag == 0)){
    butterfly_footer_beautify_injector_config();
  }
  else if (epage === cpage){
    butterfly_footer_beautify_injector_config();
  }
  </script><script async src="/js/runtime.js"></script><script defer src="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiper.min.js"></script><script defer data-pjax src="https://unpkg.zhimg.com/hexo-butterfly-footer-beautify/lib/swiperbdage_init.min.js"></script><script data-pjax>
  function butterfly_swiper_injector_config(){
    var parent_div_git = document.getElementById('recent-posts');
    var item_html = '<div class="recent-post-item" style="height: auto;width: 100%"><div class="blog-slider swiper-container-fade swiper-container-horizontal" id="swiper_container"><div class="blog-slider__wrp swiper-wrapper" style="transition-duration: 0ms;"><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/dc34.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src="../cover/socket.webp" alt="" onerror="this.src=https://unpkg.zhimg.com/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2021-11-30</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/dc34.html&quot;);" href="javascript:void(0);" alt="">Socket.IO使用</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/dc34.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/bf72.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src="../img/垂直.png" alt="" onerror="this.src=https://unpkg.zhimg.com/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2021-10-24</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/bf72.html&quot;);" href="javascript:void(0);" alt="">一个盒子垂直水平居中有哪些方法？</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/bf72.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/a2b7.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src="../img/assist/image2.png" alt="" onerror="this.src=https://unpkg.zhimg.com/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2021-11-02</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/a2b7.html&quot;);" href="javascript:void(0);" alt="">使用VuePress搭建vue组件库</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/a2b7.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/213d.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src="../cover/business.jpg" alt="" onerror="this.src=https://unpkg.zhimg.com/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2021-05-12</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/213d.html&quot;);" href="javascript:void(0);" alt="">双飞翼布局和圣杯布局</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/213d.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/3079.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src="https://api.ixiaowai.cn/gqapi/gqapi.php" alt="" onerror="this.src=https://unpkg.zhimg.com/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2021-04-03</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/3079.html&quot;);" href="javascript:void(0);" alt="">盒模型</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/3079.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div></div><div class="blog-slider__pagination swiper-pagination-clickable swiper-pagination-bullets"></div></div></div>';
    console.log('已挂载butterfly_swiper')
    parent_div_git.insertAdjacentHTML("afterbegin",item_html)
    }
  var elist = 'undefined'.split(',');
  var cpage = location.pathname;
  var epage = 'all';
  var flag = 0;

  for (var i=0;i<elist.length;i++){
    if (cpage.includes(elist[i])){
      flag++;
    }
  }

  if ((epage ==='all')&&(flag == 0)){
    butterfly_swiper_injector_config();
  }
  else if (epage === cpage){
    butterfly_swiper_injector_config();
  }
  </script><script defer src="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiper.min.js"></script><script defer data-pjax src="https://npm.elemecdn.com/hexo-butterfly-swiper/lib/swiper_init.js"></script><!-- hexo injector body_end end --></body></html>